package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOS4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// FORMA PAGO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<FORMAPAGO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			FormaPagoDAO formaPagoDAO = fabricaMySQL.getFormaPagoDAO();
			FormaPagoTO formaPagoTO = new FormaPagoTO((short) 0, "Efectivo");

			// insert
			if (formaPagoDAO.insertFormaPago(formaPagoTO)) {
				formaPagoDAO.insertFormaPago(formaPagoTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = formaPagoDAO.deleteFormaPago((short) 1);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			formaPagoTO.setIdFormaPago((short) 2);
			formaPagoTO.setNombre("creditoCelular");

			resultado = formaPagoDAO.updateFormaPago(formaPagoTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca por id
			formaPagoTO = formaPagoDAO.findFormaPagoById((short) 2);
			if (formaPagoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("FORMA PAGO");
				System.out.println("id_forma_pago: "
						+ formaPagoTO.getIdFormaPago());
				System.out.println("nombre: " + formaPagoTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT FORMA PAGO+**");
			ArrayList<FormaPagoTO> listFormaPagoTO = formaPagoDAO
					.selectFormaPago();
			for (int i = 0; i < listFormaPagoTO.size(); i++) {
				formaPagoTO = listFormaPagoTO.get(i);
				System.out.println("FORMA PAGO");
				System.out.println("id_forma_pago: "
						+ formaPagoTO.getIdFormaPago());
				System.out.println("nombre: " + formaPagoTO.getNombre());
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// INSTITUCIONFINANCIERA
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<INSTITUCIONFINANCIERA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			InstitucionFinancieraDAO institucionFinancieraDAO = fabricaMySQL
					.getInstitucionFinancieraDAO();
			InstitucionFinancieraTO institucionFinancieraTO = new InstitucionFinancieraTO(
					0, "BANXICO", "55567890");

			// insert
			if (institucionFinancieraDAO
					.insertInstitucionFinanciera(institucionFinancieraTO)) {
				institucionFinancieraDAO
						.insertInstitucionFinanciera(institucionFinancieraTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = institucionFinancieraDAO.deleteInstitucionFinanciera(8);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			institucionFinancieraTO.setIdInstitucionFinanciera(2);
			institucionFinancieraTO.setNombre("bancomex");

			resultado = institucionFinancieraDAO
					.updateInstitucionFinanciera(institucionFinancieraTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("BUSQUEDA POR ID");
			institucionFinancieraTO = institucionFinancieraDAO
					.findInstitucionFinancieraById(2);
			if (institucionFinancieraTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("INSTITUCIONFINANCIERA");
				System.out.println("id_institucion_financiera: "
						+ institucionFinancieraTO.getIdInstitucionFinanciera());
				System.out.println("nombre: "
						+ institucionFinancieraTO.getNombre());
				System.out.println("telefono: "
						+ institucionFinancieraTO.getTelefono());

			} else {
				System.out.println("Falla en la seleccion");
			}
			// busca
			System.out.println("BUSQUEDA POR NOMBRE");
			institucionFinancieraTO = institucionFinancieraDAO
					.findInstitucionFinancieraByNombre("ixe");
			if (institucionFinancieraTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("INSTITUCIONFINANCIERA");
				System.out.println("id_institucion_financiera: "
						+ institucionFinancieraTO.getIdInstitucionFinanciera());
				System.out.println("nombre: "
						+ institucionFinancieraTO.getNombre());
				System.out.println("telefono: "
						+ institucionFinancieraTO.getTelefono());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busca
			System.out.println("BUSQUEDA POR TELEFONO");
			institucionFinancieraTO = institucionFinancieraDAO
					.findInstitucionFinancieraByTelefono("01020101");
			if (institucionFinancieraTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("INSTITUCIONFINANCIERA");
				System.out.println("id_institucion_financiera: "
						+ institucionFinancieraTO.getIdInstitucionFinanciera());
				System.out.println("nombre: "
						+ institucionFinancieraTO.getNombre());
				System.out.println("telefono: "
						+ institucionFinancieraTO.getTelefono());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT INSTITUCIONFINANCIERA+**");
			ArrayList<InstitucionFinancieraTO> listInstitucionFinancieraTO = institucionFinancieraDAO
					.selectInstitucionFinanciera();
			for (int i = 0; i < listInstitucionFinancieraTO.size(); i++) {
				institucionFinancieraTO = listInstitucionFinancieraTO.get(i);
				System.out.println("INSTITUCIONFINANCIERA");
				System.out.println("id_forma_pago: "
						+ institucionFinancieraTO.getIdInstitucionFinanciera());
				System.out.println("nombre: "
						+ institucionFinancieraTO.getNombre());
				System.out.println("telefono: "
						+ institucionFinancieraTO.getTelefono());
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// MARCA
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<MARCA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			MarcaDAO marcaDAO = fabricaMySQL.getMarcaDAO();
			MarcaTO marcaTO = new MarcaTO((short) 0, "porsche");

			// insert
			if (marcaDAO.insertMarca(marcaTO)) {
				marcaDAO.insertMarca(marcaTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = marcaDAO.deleteMarca((short) 18);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			marcaTO.setIdMarca((short) 2);
			marcaTO.setNombre("sion");

			resultado = marcaDAO.updateMarca(marcaTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca por id
			System.out.println("Busqueda POR ID");
			marcaTO = marcaDAO.findMarcaById((short) 2);
			if (marcaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MARCA");
				System.out.println("id_marca: " + marcaTO.getIdMarca());
				System.out.println("nombre: " + marcaTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// Busca
			System.out.println("Busqueda POR NOMBRE");
			marcaTO = marcaDAO.findMarcaByNombre("nissan");
			if (marcaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MARCA");
				System.out.println("id_marca: " + marcaTO.getIdMarca());
				System.out.println("nombre: " + marcaTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT MARCA+**");
			ArrayList<MarcaTO> listMarcaTO = marcaDAO.selectMarca();
			for (int i = 0; i < listMarcaTO.size(); i++) {
				marcaTO = listMarcaTO.get(i);
				System.out.println("MARCA");
				System.out.println("id_forma_pago: " + marcaTO.getIdMarca());
				System.out.println("nombre: " + marcaTO.getNombre());
			}

			// ***********************************************************************************************
			// RANGO
			System.out
					.println("<<<<<<<<<<<<<<<<<<<<<<<<<RANGO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
			try {

				RangoDAO rangoDAO = fabricaMySQL.getRangoDAO();
				RangoTO rangoTO = new RangoTO(0, (double) 100, (double) 200,
						(double) 0.5, (double) 500);

				// insert
				if (rangoDAO.insertRango(rangoTO)) {
					rangoDAO.insertRango(rangoTO);
					System.out.println("Insertado correctamente");
				} else
					System.out.println("Falla en la insercion");

				// borra
				resultado = rangoDAO.deleteRango(1);
				if (resultado == 1)
					System.out.println("Borrado correctamente");
				else if (resultado == 0)
					System.out.println("Falla en el borrado");
				else if (resultado == -1)
					System.out.println("Ocurrio una excepcion al borrar");

				// actualiza
				rangoTO.setIdRango(2);
				rangoTO.setInicio(400);
				rangoTO.setValorFijo(400);

				resultado = rangoDAO.updateRango(rangoTO);
				if (resultado == 1)
					System.out.println("Actualizado correctamente");
				else if (resultado == 0)
					System.out.println("Falla en la actualizacion");
				else if (resultado == -1)
					System.out.println("Ocurrio una excepcion");

				// Busca
				System.out.println("BUSQUEDA POR ID");
				rangoTO = rangoDAO.findRangoById(2);
				if (rangoTO != null) {
					System.out.println("Busqueda exitosa");

					System.out.println("RANGO");
					System.out.println("id_rango: " + rangoTO.getIdRango());
					System.out.println("inicio: " + rangoTO.getInicio());
					System.out.println("fin: " + rangoTO.getFin());
					System.out.println("porcentaje_sueldo: "
							+ rangoTO.getPorcentajeSueldo());
					System.out.println("valor_fijo: " + rangoTO.getValorFijo());

				} else {
					System.out.println("Falla en la seleccion");
				}
				

				System.out.println("**+SELECT RANGO+**");
				ArrayList<RangoTO> listRangoTO = rangoDAO.selectRango();
				for (int i = 0; i < listRangoTO.size(); i++) {
					rangoTO = listRangoTO.get(i);
					System.out.println("RANGO");
					System.out.println("id_rango: " + rangoTO.getIdRango());
					System.out.println("inicio: " + rangoTO.getInicio());
					System.out.println("fin: " + rangoTO.getFin());
					System.out.println("porcentaje_sueldo: "
							+ rangoTO.getPorcentajeSueldo());
					System.out.println("valor_fijo: " + rangoTO.getValorFijo());
				}
				
				System.out.println("**+SELECT RANGO RANGO+**");
				listRangoTO = rangoDAO.selectRangoByRango((double)1, (double)400);
				for (int i = 0; i < listRangoTO.size(); i++) {
					rangoTO = listRangoTO.get(i);
					System.out.println("RANGO");
					System.out.println("id_rango: " + rangoTO.getIdRango());
					System.out.println("inicio: " + rangoTO.getInicio());
					System.out.println("fin: " + rangoTO.getFin());
					System.out.println("porcentaje_sueldo: "
							+ rangoTO.getPorcentajeSueldo());
					System.out.println("valor_fijo: " + rangoTO.getValorFijo());
				}

			} catch (Exception e) {
				System.out.println("Ocurrio una excepcion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
	}

}
